#!/data/data/com.termux/files/usr/bin/bash

# ==============================================
# GXDE Termux 安装脚本 (防.rootfs后缀干扰版)
# 版本：5.1
# ==============================================

# 配置参数
ROOTFS_URL="https://mirrors.sdu.edu.cn/GXDE/TGZ/debian-gxde.tar.xz.rootfs" # 原始URL含.rootfs
INSTALL_DIR="$HOME/gxde"
BIN_DIR="/data/data/com.termux/files/usr/bin"
START_CMD="debian"
MIRROR_URL="https://mirrors.tuna.tsinghua.edu.cn/termux/termux-packages-24"

# 颜色定义
RED='\033[1;31m'
GREEN='\033[1;32m'
YELLOW='\033[1;33m'
BLUE='\033[1;34m'
NC='\033[0m'

# 清理文件名函数 (关键改进)
function clean_filename() {
    local url="$1"
    local filename=$(basename "$url")
    # 去除.rootfs后缀但保留.tar.xx
    echo "$filename" | sed 's/\.rootfs//'
}

# 自动获取解压命令
function get_extract_cmd() {
    local clean_file=$(clean_filename "$ROOTFS_URL")
    case "$clean_file" in
        *.tar.xz)  echo "tar -xJf" ;;
        *.tar.gz)  echo "tar -xzf" ;;
        *.tar.zst) echo "tar --zstd -xf" ;;
        *)         echo -e "${RED}错误：不支持的压缩格式${NC}"; exit 1 ;;
    esac
}

# 安装流程
function install() {
    # 0. 准备文件名
    local output_file="$INSTALL_DIR/$(clean_filename "$ROOTFS_URL")"
    
    # 1. 下载文件 (自动重命名)
    echo -e "${YELLOW}[1/4] 下载rootfs (自动重命名处理)...${NC}"
    mkdir -p "$INSTALL_DIR"
    wget --show-progress -q "$ROOTFS_URL" -O "$output_file" || {
        echo -e "${RED}✗ 下载失败!${NC}"
        exit 1
    }

    # 2. 准备解压工具
    echo -e "${YELLOW}[2/4] 准备解压工具...${NC}"
    extract_cmd=$(get_extract_cmd)
    case "$extract_cmd" in
        *-xJf)   pkg install -y xz-utils ;;
        *-xzf)   pkg install -y gzip ;;
        *--zstd) pkg install -y zstd ;;
    esac

    # 3. 解压文件
    echo -e "${YELLOW}[3/4] 解压文件中...${NC}"
    if ! $extract_cmd "$output_file" -C "$INSTALL_DIR"; then
        echo -e "${RED}✗ 解压失败! 可能原因："
        echo -e "1. 文件下载不完整"
        echo -e "2. 存储空间不足"
        echo -e "3. 压缩工具未安装成功${NC}"
        rm -f "$output_file"
        exit 1
    fi
    rm -f "$output_file"

    # 4. 标准化目录名
    [ -d "$INSTALL_DIR/debian" ] && mv "$INSTALL_DIR/debian" "$INSTALL_DIR/rootfs"
}

# 配置启动器
function setup_launcher() {
    echo -e "${YELLOW}[4/4] 配置启动命令...${NC}"
    cat > "$BIN_DIR/$START_CMD" <<EOF
#!/bin/bash
echo "╔══════════════════════════════╗"
echo "║  正在启动 GXDE Debian 容器   ║"
echo "╚══════════════════════════════╝"
unset LD_PRELOAD
exec proot \\
  -0 \\
  -r "$INSTALL_DIR/rootfs" \\
  -b /dev \\
  -b /proc \\
  -b /sys \\
  -b /data \\
  -b /sdcard \\
  -w /root \\
  /usr/bin/env -i \\
  HOME=/root \\
  TERM="\$TERM" \\
  PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \\
  /bin/bash --login
EOF
    chmod +x "$BIN_DIR/$START_CMD"
}

# 主流程
echo -e "${GREEN}▶ 开始安装 (自动处理.rootfs后缀)${NC}"

# 1. 换源更新
sed -i 's@^\(deb.*stable main\)$@#\1\ndeb '"$MIRROR_URL"' stable main@' $PREFIX/etc/apt/sources.list
pkg update -y

# 2. 安装基础工具
pkg install -y wget proot tar

# 3. 执行安装
install
setup_launcher

echo -e "\n${GREEN}✓ 安装完成! 输入 ${BLUE}$START_CMD${GREEN} 启动容器${NC}"
echo -e "${YELLOW}文件位置: $INSTALL_DIR/rootfs${NC}"